package com.zhong;


import com.zhong.po.User;
import org.junit.Test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;


/**
 * Java反射机制是在运行状态中，对于任意一个类，都能够知道这个类的所有属性和方法；
 *     对于任意一个对象，都能够调用它的任意一个方法和属性；
 *     这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
 *
 */
public class App {

    @Test
    public void demo1(){
        User user = new User();
        String add = user.add();
    }
    
    //java反射
    @Test
    public void demo2() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
        Class<?> clazz = Class.forName("com.zhong.po.User");
        User user = (User)clazz.newInstance();
        Method delete = clazz.getDeclaredMethod("delete", int.class);
        delete.setAccessible(true);
        Object invoke = delete.invoke(user, 22);
        System.err.println(invoke);

        System.err.println(user.add());
    }
}
